package com.zhang.hadoop.netty.nio.selector;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

/**
 * @author zhang yufei
 * @date 2022/1/10 7:09 下午
 * @description: 服务器端与客户端之间的通讯,客户端如果要启动多个,需要在 run->config 中将程序设置为可以启动多个
 *
 **/
public class NIOClient {

    public static void main(String[] args) {
        //得到一个网络通道
        try {
            SocketChannel socketChannel = SocketChannel.open();
            //设置非阻塞
            socketChannel.configureBlocking(false);
            //提供服务器端 ip 和端口
            InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 8000);
            //连接服务器
            if (!socketChannel.connect(inetSocketAddress)) {
                while (!socketChannel.finishConnect()) {
                    System.out.println("因为连接需要时间,客户端不会阻塞,可以做其它工作");
                }
            }
            //如果连接成功,就发送数据
            String str = "hello,zhang yufei";
            ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes());
            //发送数据,将 buffer 写入到 channel
            socketChannel.write(byteBuffer);
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
